//
//  GYDPresentationController.swift
//  Weibo
//
//  Created by 贵永冬 on 16/7/17.
//  Copyright © 2016年 贵永冬. All rights reserved.
//

import UIKit

class GYDPresentationController: UIPresentationController {
    
    
    
    // 透明的背景按钮
    private lazy var coverButton: UIButton = {
        let btn = UIButton()
        btn.frame = UIScreen.mainScreen().bounds
        btn.backgroundColor = UIColor.clearColor()
        return btn
    }()
    
    /// 保存菜单的尺寸
    var presentFrame = CGRectZero
    
    /*
     1.如果不自定义转场modal出来的控制器会移除原有的控制器
     2.如果自定义转场modal出来的控制器不会移除原有的控制器
     3.如果不自定义转场modal出来的控制器的尺寸和屏幕一样
     4.如果自定义转场modal出来的控制器的尺寸我们可以自己在containerViewWillLayoutSubviews方法中控制
     5.containerView 非常重要, 容器视图, 所有modal出来的视图都是添加到containerView上的
     6.presentedView() 非常重要, 通过该方法能够拿到弹出的视图
     */
    override init(presentedViewController: UIViewController, presentingViewController: UIViewController) {
        super.init(presentedViewController: presentedViewController, presentingViewController: presentingViewController)
    }
    
    // 用于布局转场动画弹出的控件
    override func containerViewWillLayoutSubviews() {
        // 设置弹出视图的尺寸
        presentedView()?.frame = presentFrame
        
        // 添加蒙版
        containerView?.insertSubview(coverButton, atIndex: 0)
        coverButton.addTarget(self, action: #selector(GYDPresentationController.coverBtnClick), forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    // MARK: - 内部控制方法
    @objc private func coverBtnClick() {
        // 让菜单消失
        presentedViewController.dismissViewControllerAnimated(true, completion: nil)
    }
    deinit {
        print("pop模态跳转控制器消失")
    }
    
}
